Don't emulate faulting writes to stack. May fix a number of recent hvm
authorSteven Hand <steven@xensource.com>
Wed, 23 Aug 2006 16:25:11 +0000 (17:25 +0100)
committerSteven Hand <steven@xensource.com>
Wed, 23 Aug 2006 16:25:11 +0000 (17:25 +0100)
bugs with the new shadow code. A more complete clean-up of the emulation
code will follow.

Signed-off-by: Steven Hand <steven@xensource.com>
xen/arch/x86/x86_emulate.c

index 53f4fe41183a5231452e23cada882c44a07d2695..4016aa77e33a678588bee5452eb9c9533aeb4275 100644 (file)
@@ -846,6 +846,9 @@ x86_emulate_memop(
             emulate_1op("dec", dst, _regs.eflags);
             break;
         case 6: /* push */
+            /* Don't emulate if fault was on stack */
+            if ( _regs.error_code & 2 )
+                goto cannot_emulate; 
             /* 64-bit mode: PUSH always pushes a 64-bit operand. */
             if ( mode == X86EMUL_MODE_PROT64 )
             {